/*******对服务器端数据API进行二次封装*******/
//服务器端接口的基础地址
export let base = 'https://web.codeboy.com/xuezi/'

//POST请求的公共选项
let postOptions = {
	//请求方法
	method: 'POST',
	//请求消息主体内容类型
	header:{'Content-Type': 'application/x-www-form-urlencoded'}
}

/**
 * API-1.1：商品列表
 * 接口地址：data/product/list.php
 * 请求方式：GET
 * 请求示例：data/product/list.php?pno=1&kw=Apple
 */
export let productList = async (pno=1, kw="")=>{
	//1.显示“加载中”提示框
	uni.showLoading({
		title:'商品加载中'
	})
	//2.异步请求服务器端接口数据
	let url = base + `data/product/list.php?pno=${pno}&kw=${kw}`
	let [err, res] = await uni.request({
		url
	})
	//3.隐藏“加载中”提示框
	uni.hideLoading()
	return res.data
}

/**
 * API-1.2、商品详情
 * 接口地址：data/product/details.php
 * 请求方式：GET
 * 请求示例：data/product/details.php?lid=2
 */
export let productDetails = async (lid=1)=>{
	let url = base + 'data/product/details.php?lid=' + lid
	//显示“加载中”提示框
	uni.showLoading({
		title:'商品查询中...'
	})
	//异步请求服务器端数据
	let [err, res] = await uni.request({
		url
	})
	//隐藏“加载中”提示框
	uni.hideLoading()
	//返回查询到的响应消息主体数据
	return res.data
}

/**
 * API-1.5、首页数据
 * 接口地址：data/product/index.php
 * 请求方式：GET
 * 接口示例：data/product/index.php
 */
export let productIndex = async ()=>{
	let url = base + 'data/product/index.php'
	uni.showLoading({
		title: '数据加载中...'
	})
	let [err, res] = await uni.request({
		url
	})
	uni.hideLoading()
	return res.data
}

/**
 * API-1.6、品牌列表
 * 接口地址：data/product/brand.php
 * 请求方式：GET
 * 接口示例：data/product/brand.php
 */
export let productBrand = async ()=>{
	let url = base + 'data/product/brand.php'
	uni.showLoading({
		title: '品牌加载中...'
	})
	let [err, res] = await uni.request({
		url
	})
	uni.hideLoading()
	return res.data
}

/**
 * API-1.7、产品分类
 * 接口地址：data/product/category.php
 * 请求方式：GET
 * 接口示例：data/product/category.php
 */
export let productCategory = async ()=>{
	let url = base + 'data/product/category.php'
	uni.showLoading({
		title: '类目加载中...'
	})
	let [err, res] = await uni.request({
		url
	})
	uni.hideLoading()
	return res.data
}

/**
 * API-2.1、用户注册
 * 接口地址：data/user/register.php
 * 请求方式：POST
 * 请求示例：data/user/register.php
 */
export let userRegister = async ({uname,upwd,email,phone})=>{
	let url = base + 'data/user/register.php'
	uni.showLoading({
		title: '提交中...'
	})
	let [err, res] = await uni.request({
		url,
		...postOptions,
		// method: 'POST',
		// header: {'Content-Type': 'application/x-www-form-urlencoded'},
		data: {uname,upwd,email,phone}
	})
	uni.hideLoading()
	return res.data
}

/**
 * API-2.2、用户登录
 * 接口地址：data/user/login.php
 * 请求方式：POST
 * 请求示例：data/user/login.php
 */
export let userLogin = async ({uname,upwd})=>{
	let url = base + 'data/user/login.php'
	uni.showLoading({
		title: '登录中...'
	})
	let [err, res] = await uni.request({
		url,
		...postOptions,//展开POST请求选项对象
		data: {uname,upwd}
	})
	uni.hideLoading()
	return res.data
}

/**
 * API-2.3、当前登录用户基础信息
 * 接口地址：data/user/get_basic.php
 * 请求方式：GET
 * 请求示例：data/user/get_basic.php
 * 前置要求：完成用户登录，请求头部携带身份认证token
 * 请求头部：authorization: 加密TOKEN数据
 */
export let userGetBasic = async ()=>{
	let url = base + 'data/user/get_basic.php'
	uni.showLoading({
		title: '数据读取中...'
	})
	//读取保存在客户端的用户令牌
	let token = uni.getStorageSync('userToken')
	let [err, res] = await uni.request({
		url,				
		header:{'authorization': token}  //在请求消息头部中携带token给服务器
	})
	uni.hideLoading()
	return res.data
}

/**
 * API-2.12、检测用户名是否存在
 * 接口地址：data/user/check_uname.php
 * 请求方式：GET
 * 请求示例：data/user/check_uname.php?uname=ding
 */
export let userCheckUname = async (uname)=>{
	let url = base + 'data/user/check_uname.php?uname=' + uname
	uni.showLoading({
		title: '检查中...'
	})
	let [err, res] = await uni.request({
		url	
	})
	uni.hideLoading()
	return res.data
}

/**
 * API-2.13、退出登录
 * 接口地址：data/user/logout.php
 * 返回格式：JSON
 * 请求方式：GET
 * 前置要求：完成用户登录，请求头部携带身份认证token
 * 请求头部：authorization: 加密TOKEN数据
 */
export let userLogout = async ()=>{
	let url = base + 'data/user/logout.php'
	uni.showLoading({
		title: '退出中...'
	})
	let [err, res] = await uni.request({
		url,
		header:{'authorization': uni.getStorageSync('userToken')}
	})
	uni.hideLoading()
	return res.data
}

/**
 * API-3.1、添加购物车购买项
 * 接口地址：data/cart/add.php
 * 返回格式：JSON
 * 请求方式：GET
 * 请求示例：data/cart/add.php?lid=1&buyCount=5
 * 前置要求：完成用户登录，请求头部携带身份认证token
 * 请求头部：authorization: 加密TOKEN数据
 */
export let cartAdd = async (lid, buyCount)=>{
	let url = base + `data/cart/add.php?lid=${lid}&buyCount=${buyCount}`
	uni.showLoading({
		title: '添加中...'
	})
	let [err, res] = await uni.request({
		url,
		header: {'authorization': uni.getStorageSync('userToken')}
	})
	uni.hideLoading()
	return res.data
}

/**
 * API-3.2、购物车项列表
 * 接口地址：data/cart/list.php
 * 返回格式：JSON
 * 请求方式：GET
 * 请求示例：data/cart/list.php
 * 前置要求：完成用户登录，请求头部携带身份认证token
 * 请求头部：authorization: 加密TOKEN数据
 */
export let cartList = async ( )=>{
	let url = base + `data/cart/list.php`
	uni.showLoading({
		title: '数据读取中...'
	})
	let [err, res] = await uni.request({
		url	
	})
	uni.hideLoading()
	return res.data
}